Skip to content

fix(extended_chat): keep real tool errors and recover chat lookup by id - #1134

Open
3316891527 wants to merge 2 commits into
AAswordman:devfrom
3316891527:fix/extended-chat-error-semantics
Open

fix(extended_chat): keep real tool errors and recover chat lookup by id#1134
3316891527 wants to merge 2 commits into
AAswordman:devfrom
3316891527:fix/extended-chat-error-semantics

Conversation

@3316891527

@3316891527 3316891527 commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

变更说明 / Description

背景与动机 / Context and motivation

extended_chat 对宿主聊天 API 的错误处理和会话查找不够准确:超时可能被当成成功,失败文案被统一改写,按 id 查找时可能错过实际存在的会话。

改动范围 / Changes

  • chat_with_agent 不再用 Promise.race 把发送超时写成成功,只等待原生 timeout_ms
  • 工具失败不再统一包成「读取对话消息失败」,保留原始错误文案。
  • 角色卡查找失败不再被空 catch 吞掉;按名称精确匹配,否则大小写不敏感匹配。
  • startService 失败会让 chat_with_agent 失败,不再忽略。
  • 传入已有 chat_id 时要求该会话已绑定角色,并按角色 id 或名称校验一角色一会话。
  • read_messages_range 的工具描述标明行号包含库内 summary 等隐藏行。
  • find_chat / 按标题解析会话 / chat_with_agent 校验已有会话时:先走宿主 findChat;query 为对话 id 仍找不到则用 list_chatsagent_status 再确认;支持 current 解析为当前会话。

不同步修改宿主 findChat、工作流或其它插件。

兼容性与风险 / Compatibility and risks

  • chat_with_agent 超时从成功变为失败。
  • 失败文案不再带统一前缀。
  • 未绑定角色的会话不能再用于 chat_with_agent
  • startService 失败会阻断发信。

关联 Issue / Related issue

N/A。内置 extended_chat 插件修复。

验证方式 / Verification

检查或命令:
tsc 编译 examples/extended_chat.ts,同步 examples/extended_chat.js 与 app/src/main/assets/packages/extended_chat.js(去掉 "use strict")
android-build.yml / android-tests.yml on fix/extended-chat-error-semantics
环境与变体:
分支基于 upstream/dev
结果:
三文件已同步。Tests 若失败于 DeepseekProviderMediaRoleTest / XaiProviderReasoningTest,为上游存量编译错误,与本 diff 无关。

证据 / Evidence

2 commits, 3 files (examples/extended_chat.ts, examples/extended_chat.js, app/src/main/assets/packages/extended_chat.js).

Stop treating send timeouts as success, keep native error text, require one bound role per chat, and fail if chat service cannot start.
If find_chat only trusts the in-memory chat list, a valid UUID can still
fail with Chat not found. Fall back to DAO-backed existence checks and
accept current as the active window.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant